查看原文
其他

【第442期】手机百度移动适配切图解决方案介绍

三水清 前端早读课 2022-07-13

前言

现在移动设备越来越大,在项目中常见的一个例子就是要兼顾小屏幕的问题,导致在大屏下过多的留白显得整个页面“空”了。同时昨天早读君也遇到了这么一个问题,设计师以640px来设计活动页,但现在项目设备宽屏的占50%,那这个时候要怎么处理呢?类似的情况很多。

所以今天我们就来看看手百关于这块是采用什么方案处理?


正文从这开始~


我们知道移动开发上面有个设备像素比:window.devicePixelRatio,现在在开发页面的时候,一定会在head中添加个viewportmeta类似下面的代码:


但是随着手机屏幕越来越大,于是页面会遇见下面的问题,手机屏幕越大,右边留白越多,字体越小也不清晰,影响体验:



介绍下REM

rem是以document.documentElement(即<html>标签)的font-size为基准的,举例说明:

htmlfont-size10px

那么1rem = 10px


手百Rem切图方案

为了切图方便,我们手百使用了Rem切图,首先类似淘宝的flexible方案,会在页面head中引入一个flexible.js


为了计算方便,我们将documentElementfont-size设置为页面宽度的10%,代码如下:


同时配合js获取dpr动态设置的viewport。切图布局的时候,需要计算rem,为了方便我们使用sass写了一个rem函数和mixin


ps:详细这部分可以查看原文


sass变量 $rem-baseline 是基准值,以设计图宽度/10为准,这样设计后,就可以直接用视觉稿的尺寸大小切图了。


举个例子

720px的视觉稿中有个360x360div


普通切图

使用普通方法切页面,设置:


这样采用iPhone5为基准手机切图,需要计算:需要切图的图层width/(视觉稿width/基准手机设备宽度)即:360/(720/320)=160px


Rem切图

设置$rem-baseline720/10,即72px

使用rem进行计算:width: rem(360px)

算一算

html字体:1rem=640px/10=64px

viewportscale = 1/dpr = 0.5

css的宽:360px/72px = 5rem

5rem 64px 0.5= 160px


字体问题

字体的大小是根据<body>标签的font-size,为了计算方便,$font-baseline设置为12px,所以需要根据不同的设备像素比设置不同的font-size,然后配合sassmixin fontsize设置字体大小


总结

关于设备上面的切图就说到这里,想了解更多,看下我之前的内部分享:


大家的方案都是异曲同工,有兴趣的可以了解看看。


关于本文

作者:@三水清

原文链接:http://dwz.cn/2lxkWT


长按图片识别图中二维码


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存